// 获取全局App实例
const app = getApp();
const contentCheckUrl = 'https://api.weixin.qq.com/wxa/msg_sec_check';
const { request } = require('../../utils/request.js');
const api = require('../../utils/api.js');
Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 系统信息
    statusBarHeight: 0,
    menuButtonInfo: null,
    navigationBarHeight: 44,
    headerHeight: 0,
    rankingList: [],
    // 用户信息
    userInfo: {
      user_id: '',
      avatarUrl: '/assets/icons/default-avatar.png',
      nickName: '',
      usage_count: 0
    },
    // 状态数据
    remainingUses: 20, // 剩余使用次数
    favoriteCount: 12, // 收藏题目数量
    historyCount: 58,  // 历史记录数量
    unreadCount: 0,    // 未读消息数
    vipTag: 'HOT',     // VIP标签文本

    // 版本信息
    version: 'v1.0.0',

    // 控制排行榜弹窗显示
    showRankingPopup: false,

    // 用户信息编辑相关
    showUserInfoEditor: false,
    tempUserInfo: {
      avatarUrl: '',
      nickName: ''
    },
    extraUserInfo: {},

    // 激活码相关
    showActivationCodePopup: false,

    // 邀请相关
    inviteCount: 0,
    userRank: '未上榜',

    // 管理员相关
    showAdminCodeManager: false,
    adminTapCount: 0,
    adminLastTapTime: 0,

    popupVisible: false,  // 控制弹窗的显示与隐藏
    imageUrl: app.globalData.service_icon, // 图片链接
    popupText: '长按二维码,咨询客服',
    MenuButton: {},
    isAgent: false,
    user_top: '邀请5人奖励20次无上限',
    showUserGuide: false,
    version: '',
    showPayGuide: false,
    showInviteGuide: false,
  },
  // 分享给朋友
  onShareAppMessage: async function () {
    let title = '学法减分+全题型覆盖！一次通关必备！';
    let imageUrl = '/image/0404.png';
    return {
      title: title,
      path: '/pages/index/index?sharerId=' + wx.getStorageSync('userId'),
      imageUrl: imageUrl
    };
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取用户信息（从本地缓存或服务器）
    this.getUserInfo();
    this.fetchUnreadCount();
    this.getInviteInfo(); // 添加获取邀请信息
    this.getVersion();
    this.setData({
      MenuButton: wx.getMenuButtonBoundingClientRect()
    })
    this.checkAdminPermission()
    app.getConfig('user_top', res => {
      if (res.is_public) {
        this.setData({ user_top: res.value })
      }
    })
    // 检查是否需要显示新手引导
    this.checkShowUserGuide();

    if (!wx.getStorageSync('userId')) {
      app.userLogin()
      return
    }
  },

  getVersion() {
    const accountInfo = wx.getAccountInfoSync();
    console.log('版本号：', accountInfo);
    const version = accountInfo.miniProgram.version || '开发版';
    this.setData({ version });
  },


  onShow: function () {
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 2 // 首页对应索引0
      });
    }
    this.fetchUnreadCount();
    this.getInviteInfo(); // 每次显示页面时更新邀请信息
  },

  // 初始化系统信息
  initSystemInfo: function () {
    try {
      const systemInfo = wx.getSystemInfoSync();
      const menuButtonInfo = wx.getMenuButtonBoundingClientRect();

      // 计算导航栏高度 = 状态栏高度 + 固定的导航栏高度
      const navigationBarHeight = this.data.navigationBarHeight;
      const headerHeight = systemInfo.statusBarHeight + navigationBarHeight;

      this.setData({
        statusBarHeight: systemInfo.statusBarHeight,
        menuButtonInfo: menuButtonInfo,
        navigationBarHeight: navigationBarHeight,
        headerHeight: headerHeight
      });
    } catch (e) {
      console.error('获取系统信息失败', e);
      // 使用默认值
      this.setData({
        statusBarHeight: 20,
        headerHeight: 64
      });
    }
  },

  // 检查登录状态
  checkLoginStatus: function () {
    const token = wx.getStorageSync('token');
    if (token) {
      this.getUserInfo();
      this.getMemberInfo();
    }
  },

  getUserInfo: function () {
    const that = this;
    wx.getStorage({
      key: 'userInfo',
      success(res) {
        that.setData({
          userInfo: res.data
        });
      },
      fail() {
        // 未登录，调用登录，并在登录完成时更新数据
        app.globalData.userLoginReadyCallback = (userInfo) => {
          that.setData({
            userInfo: userInfo
          });
        };
        app.userLogin();
      }
    });
  },


  // 获取会员信息
  getMemberInfo: function () {
    // 模拟获取会员信息
    // 实际项目中应该通过API请求获取
    setTimeout(() => {
      this.setData({
        'memberInfo.level': '黄金会员',
        'memberInfo.discount': '88折',
        'memberInfo.points': 2580,
        'memberInfo.balance': 125.80,
        'memberInfo.expireDate': '2023-12-31'
      });
    }, 700);
  },

  // 获取未读消息数量
  fetchUnreadCount: function () {

    request(api.userUsageCount + '?user_id=' + wx.getStorageSync('userId'), 'GET')
      .then(res => {
        this.setData({
          'userInfo.usage_count': res.data.usage_count
        });
      })
      .catch(err => {
        console.error('获取usage_count失败', err);
      });
  },

  // 处理点击用户信息区域
  handleUserTap: function () {
    if (!this.data.userInfo.isLoggedIn) {
      this.goToLogin();
    } else {
      wx.navigateTo({
        url: '/pages/userDetail/userDetail'
      });
    }
  },

  // 前往登录页
  goToLogin: function () {
    wx.navigateTo({
      url: '/pages/login/login'
    });
  },


  // 处理客服消息
  handleContact: function (e) {
    console.log('联系客服', e);
  },

  // 分享小程序
  onShareAppMessage: function () {
    const userId = this.data.userInfo.user_id || '';
    return {
      title: '学法减分+全题型覆盖！一次通关必备！',
      path: '/pages/index/index?sharerId=' + userId,
      imageUrl: '/image/0404.png'
    };
  },

  // 分享朋友圈
  onShareTimeline: function () {
    const userId = this.data.userInfo.user_id || '';
    return {
      title: '学法减分题库 - 专业学习平台',
      query: 'sharerId=' + userId,
      imageUrl: '/assets/images/share.png'
    };
  },

  /**
   * 跳转到充值中心
   */
  navigateToRecharge: function () {
    wx.navigateTo({
      url: '/pages/recharge/recharge',
    });
  },

  /**
   * 跳转到收益排行榜
   */
  navigateToRankings: function () {
    this.getRankingList();

    this.setData({
      showRankingPopup: true
    });
  },

  /**
   * 关闭收益排行榜弹窗
   */
  closeRankingPopup: function () {
    this.setData({
      showRankingPopup: false
    });
  },

  /**
   * 跳转到我的订单
   */
  navigateToOrders: function () {
    wx.navigateTo({
      url: '/pages/orders/orders',
    });
  },

  /**
   * 跳转到帮助中心
   */
  navigateToHelp: function () {
    wx.navigateTo({
      url: '/pages/help/help'
    });
  },

  /**
   * 跳转到反馈页面
   */
  navigateToFeedback: function () {
    wx.navigateTo({
      url: '/pages/feedback/feedback'
    });
  },

  /**
   * 跳转到关于我们
   */
  navigateToAbout: function () {
    wx.navigateTo({
      url: '/pages/agreement/agreement'
    });
  },

  /**
   * 跳转到隐私协议
   */
  navigateToPrivacy: function () {
    wx.navigateTo({
      url: '/pages/privacy/index'
    });
  },

  /**
   * 关联小程序
   */
  bindWechat: function () {
    // 实现关联小程序的逻辑
    wx.showModal({
      title: '关联小程序',
      content: '确定要关联小程序吗？',
      success(res) {
        if (res.confirm) {
          wx.showToast({
            title: '关联成功',
            icon: 'success',
            duration: 2000
          });
        }
      }
    });
  },

  /**
   * 绑定手机号
   */
  bindPhone: function () {
    wx.navigateTo({
      url: '/pages/bindPhone/bindPhone'
    });
  },

  /**
   * 激活码激活
   */
  activateWithCode: function () {
    // 查看用户是否登录
    if (!wx.getStorageSync('userId') && !this.data.userInfo.user_id) {
      app.userLogin()
      return
    }
    this.setData({
      showActivationCodePopup: true
    });
  },

  // 添加新的处理函数
  onActivationSuccess: function (e) {
    // 更新用户信息中的使用次数
    const { usage_count } = e.detail;
    app.globalData.userInfo.usage_count = usage_count;
    this.setData({
      userInfo: app.globalData.userInfo
    });
  },

  // 关闭激活码弹窗
  onActivationClose: function () {
    this.setData({
      showActivationCodePopup: false
    });
  },

  // 获取排行榜数据
  getRankingList: function () {
    request(api.userTop, 'GET')
      .then(res => {
        const rankList = res.data.list;
        this.setData({
          rankingList: rankList
        });
      })
      .catch(err => {
        console.error('获取排名失败', err);
      });
  },

  // 打开用户信息编辑弹窗
  openUserInfoEditor: function () {
    this.setData({
      showUserInfoEditor: true,
      tempUserInfo: {
        avatarUrl: this.data.userInfo.avatarUrl || '/assets/icons/default-avatar.png',
        nickName: this.data.userInfo.nickName || ''
      }
    });
  },

  // 关闭用户信息编辑弹窗
  closeUserInfoEditor: function () {
    this.setData({
      showUserInfoEditor: false
    });
  },

  // 选择本地图片作为头像
  chooseImage: function () {
    const that = this;
    wx.chooseMedia({
      count: 1,
      mediaType: ['image'],
      sourceType: ['album', 'camera'],
      camera: 'back',
      success: function (res) {
        const tempFilePath = res.tempFiles[0].tempFilePath;
        // 可以添加图片裁剪功能
        that.setData({
          'tempUserInfo.avatarUrl': tempFilePath
        });
      }
    });
  },
  chooseavatar(event) {
    const that = this;
    // 从 event.detail 中获取 avatarUrl
    const { avatarUrl } = event.detail;
    console.log(avatarUrl);
    wx.uploadFile({
      url: app.globalData.serverUrl + '/api/user/upload_file',  // 修改为你自己的接口地址
      filePath: avatarUrl,
      name: 'file',
      success(uploadRes) {
        const data = JSON.parse(uploadRes.data);
        if (data.code === 1) {
          // 设置头像 URL 到 tempUserInfo 中
          that.setData({
            'tempUserInfo.avatarUrl': data.url,
          });
          wx.showToast({
            title: '上传成功',
            icon: 'none'
          });
        } else {
          wx.showToast({
            title: '上传失败',
            icon: 'error'
          });
        }
      },
      fail(err) {
        console.error('上传失败', err);
        wx.showToast({
          title: '上传失败',
          icon: 'error'
        });
      }
    });
  },

  onSubmit(event) {
    const nickname = event.detail.value.nickname;

    if (!nickname || nickname.trim() === '') {
      wx.showToast({
        title: '昵称不能为空',
        icon: 'none'
      });
      return;
    }

    const that = this;
    that.setData({
      'tempUserInfo.nickName': nickname,
    }, () => {
      // 调用完整的保存流程
      that.saveAllUserInfo();
    });
  },
  // 监听昵称输入
  onNicknameInput: function (e) {
    // 在微信开发者工具和真机上可能得到的值不同
    const value = e.detail.value || e.detail;
    this.setData({
      'tempUserInfo.nickName': value
    });

    console.log('昵称输入:', value);
    return value;
  },

  // 检查昵称内容是否安全
  checkNicknameSafety: function (callback) {
    const nickname = this.data.tempUserInfo.nickName;
    if (!nickname) {
      wx.showToast({
        title: '昵称不能为空',
        icon: 'none'
      });
      return;
    }

    // 调用微信内容安全检测接口
    // 实际使用中需要通过后端服务器调用
    // 这里简化处理，假设内容安全
    const sensitiveWords = ['违禁词', '敏感词', '色情', '政治', '暴力'];
    let isSafe = true;

    for (let word of sensitiveWords) {
      if (nickname.includes(word)) {
        isSafe = false;
        break;
      }
    }

    if (isSafe) {
      callback(true);
    } else {
      wx.showToast({
        title: '昵称含有敏感内容',
        icon: 'none'
      });
      callback(false);
    }
  },

  // 保存所有用户信息(完整流程)
  saveAllUserInfo: function () {
    const that = this;

    if (!this.data.tempUserInfo.nickName || this.data.tempUserInfo.nickName.trim() === '') {
      wx.showToast({
        title: '昵称不能为空',
        icon: 'none'
      });
      return;
    }

    if (!this.data.tempUserInfo.avatarUrl) {
      wx.showToast({
        title: '请选择头像',
        icon: 'none'
      });
      return;
    }

    this.checkNicknameSafety(function (isSafe) {
      if (!isSafe) return;

      // 显示加载中
      wx.showLoading({
        title: '保存中',
      });

      // 从微信用户信息获取的额外数据
      const extraInfo = that.data.extraUserInfo || {};

      // 准备要更新的用户数据
      const updateData = {
        user_id: that.data.userInfo.user_id,
        nick_name: that.data.tempUserInfo.nickName,
        avatar_url: that.data.tempUserInfo.avatarUrl,
        gender: extraInfo.gender,
        country: extraInfo.country,
        province: extraInfo.province,
        city: extraInfo.city
      };
      request(api.updateProfile, 'POST', updateData)
        .then(res => {
          // 服务器更新成功，更新本地数据
          const newUserInfo = res.data.userInfo;

          // 更新全局数据
          if (app.globalData) {
            app.globalData.userInfo = newUserInfo;
          }

          // 更新页面数据
          that.setData({
            userInfo: newUserInfo,
            showUserInfoEditor: false
          });

          // 更新本地存储
          wx.setStorage({
            key: 'userInfo',
            data: newUserInfo
          });

          wx.hideLoading();
          wx.showToast({
            title: '保存成功',
            icon: 'success'
          });
        })
        .catch(err => {
          // 服务器更新失败
          wx.hideLoading();
          wx.showToast({
            title: res.data.msg || '保存失败',
            icon: 'none'
          });
        });
    });
  },

  // 获取邀请信息
  getInviteInfo: function () {
    const userId = this.data.userInfo.user_id || wx.getStorageSync('userId');
    if (!userId) return;
    request(api.shareCount + '?sharerId=' + userId, 'GET')
      .then(res => {
        const inviteCount = res.data.count;
        this.setData({
          inviteCount: inviteCount,
        });
      })
      .catch(err => {
        console.error('获取搜索次数失败', err);
      });

    request(api.userTop, 'GET')
      .then(res => {
        const rankList = res.data.list;
        this.setData({
          rankingList: rankList
        });

        // 查找自己的排名
        for (let i = 0; i < rankList.length; i++) {
          if (rankList[i].id == userId || rankList[i].user_id == userId) {
            this.setData({
              userRank: i + 1
            });
            break;
          }
        }
      })
      .catch(err => {
        console.error('获取排名失败', err);
      });
  },

  // 分享给好友
  shareToFriend: function () {
    wx.showShareMenu({
      withShareTicket: true,
      menus: ['shareAppMessage', 'shareTimeline']
    });
  },
  navigateToAgency: function () {
    wx.showToast({
      title: '联系客服成为代理',
      icon: 'none'
    })
  },
  navigateToDistribution: function () {
    // wx.navigateTo({
    //   url: '/pages/commission/index',
    // })
    // return
    // if (this.data.userInfo.role === "commission") {
    //   wx.navigateTo({
    //     url: '/pages/commission/index',
    //   })
    // } else {
    //   app.openShow({ url: '/image/0505.jpg', title: '加入我们', service: true })
    // }
    app.openShow({ url: '/image/0505.jpg', title: '加入我们', service: true })
  },

  navigateToResidue: function () {
    app.goPayPage()
  },
  closePopup() {
    this.setData({
      popupVisible: false
    })
  },

  // 新增: 处理用户ID长按事件
  handleUserIdLongPress() {
    // 记录点击次数和时间，用于防止误触发
    const now = new Date().getTime();
    if (now - this.data.adminLastTapTime > 3000) {
      // 如果距离上次点击超过3秒，重置计数
      this.setData({
        adminTapCount: 1,
        adminLastTapTime: now
      });
    } else {
      this.setData({
        adminTapCount: this.data.adminTapCount + 1,
        adminLastTapTime: now
      });
    }

    // 连续点击5次，弹出管理员面板
    if (this.data.adminTapCount >= 5) {
      this.checkAdminPermission();
    }
  },

  // 新增: 检查管理员权限
  checkAdminPermission() {
    const userId = wx.getStorageSync('userId');
    request(api.checkAdminPermission + '?user_id=' + userId, 'GET')
      .then(res => {
        if (res.code === 0 && res.data && res.data.has_permission) {
          this.setData({
            isAgent: true
          })
        }
      })
  },

  // 新增: 打开管理员面板
  openAdminPanel() {
    this.setData({
      showAdminCodeManager: true,
      adminTapCount: 0 // 重置点击计数
    });
  },

  // 新增: 关闭管理员面板
  closeAdminPanel() {
    this.setData({
      showAdminCodeManager: false
    });
  },

  /**
   * 跳转到代理管理中心页面
   */
  navigateToDashboard: function () {
    const userId = wx.getStorageSync('userId');
    const that = this;

    // 检查用户是否有代理权限
    request(api.checkAdminPermission + '?user_id=' + userId, 'GET')
      .then(res => {
        if (res.code === 0 && res.data && res.data.has_permission) {
          // 有代理权限，跳转到代理管理中心页面
          wx.navigateTo({
            url: '/pages/admin/dashboard/dashboard'
          });
        } else {
          // 没有权限
          wx.showModal({
            title: '提示',
            content: '您暂无代理管理权限，请联系管理员开通代理账户',
            showCancel: false
          });
        }
      })
      .catch(err => {
        console.error('检查权限失败', err);
        wx.showToast({
          title: '网络错误，请稍后再试',
          icon: 'none'
        });
      });
  },

  /**
   * 跳转到卡密管理页面
   */
  navigateToCodeManager: function () {
    const userId = wx.getStorageSync('userId');
    const that = this;

    // 检查用户是否有代理权限
    request(api.checkAdminPermission + '?user_id=' + userId, 'GET')
      .then(res => {
        if (res.code === 0 && res.data && res.data.has_permission) {
          // 有代理权限，跳转到激活码管理页面
          wx.navigateTo({
            url: '/pages/admin/activation-codes/activation-codes'
          });
        } else {
          // 没有权限
          wx.showModal({
            title: '提示',
            content: '您暂无卡密管理权限，请联系管理员开通代理账户',
            showCancel: false
          });
        }
      })
      .catch(err => {
        console.error('检查权限失败', err);
        wx.showToast({
          title: '网络错误，请稍后再试',
          icon: 'none'
        });
      });
  },

  // 检查是否需要显示用户引导
  checkShowUserGuide() {
    const hasSeenGuide = wx.getStorageSync('hasSeenGuide');
    if (!hasSeenGuide) {
      this.setData({
        showUserGuide: true
      });
    }
  },

  // 关闭用户引导
  closeUserGuide() {
    this.setData({
      showUserGuide: false
    });
    // 保存状态，避免再次显示
    wx.setStorageSync('hasSeenGuide', true);

    this.checkInviteGuide()
  },
  checkPayGuide() {
    const guide = wx.getStorageSync('hasPayGuide')
    if (!guide) {
      this.setData({
        showPayGuide: true
      });
    }
  },
  closePayGuide() {
    this.setData({
      showPayGuide: false
    });
    // 保存状态，避免再次显示
    wx.setStorageSync('hasSeenGuide', true);
    this.checkInviteGuide()
  },

  checkInviteGuide() {
    const guide = wx.getStorageSync('hasInviteGuide')
    if (!guide) {
      this.setData({
        showInviteGuide: true
      });
    }

  },

  closeInviteGuide() {
    this.setData({
      showInviteGuide: false
    });
    // 保存状态，避免再次显示
    wx.setStorageSync('hasInviteGuide', true);
  },
})



